home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / a_man / cat1 / netsnoop.z / netsnoop
Encoding:
Text File  |  2001-04-17  |  22.9 KB  |  463 lines

  1.  
  2.  
  3.  
  4. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      netsnoop - capture and decode network traffic
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ////uuuussssrrrr////ssssbbbbiiiinnnn////nnnneeeettttssssnnnnoooooooopppp [----LLLL _p_r_o_t_o_c_o_l_s] [----bbbb _b_u_f_f_e_r] [----cccc _c_o_u_n_t] [----dddd] [----eeee _f_l_a_g_s]
  13.      [----hhhh _h_e_x_p_r_o_t_o_s] [----iiii _i_n_t_e_r_f_a_c_e] [----llll _l_e_n_g_t_h] [----nnnn _n_u_l_l_p_r_o_t_o_s] [----oooo _t_r_a_c_e_f_i_l_e]
  14.      [----pppp _p_r_o_t_o_p_t_s] [----qqqq _l_i_m_i_t] [----tttt _i_n_t_e_r_v_a_l] [----rrrrssssvvvvxxxxyyyy] [_f_i_l_t_e_r ...]
  15.  
  16. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  17.      _N_e_t_s_n_o_o_p captures packets which match an optional _f_i_l_t_e_r from a network
  18.      _i_n_t_e_r_f_a_c_e or saved _t_r_a_c_e_f_i_l_e.  If _f_i_l_t_e_r is omitted and no ----eeee option is
  19.      given, it captures packets promiscuously.  For each packet, _n_e_t_s_n_o_o_p
  20.      prints decoded frames of protocol data on standard output.  It stores
  21.      captured packets in a buffer before decoding them; the default buffer
  22.      size is one.  After decoding buffered packets, _n_e_t_s_n_o_o_p resumes
  23.      capturing.  Only the superuser can run _n_e_t_s_n_o_o_p on a local network
  24.      interface.  Users accepted by the _s_n_o_o_p_d(1M) authorization file on a
  25.      NetVisualyzer station can _n_e_t_s_n_o_o_p from interfaces on that host.
  26.  
  27.    OOOOppppttttiiiioooonnnnssss
  28.      -L _p_r_o_t_o_c_o_l_s    List information on standard output about the symbols and
  29.                      options defined by _p_r_o_t_o_c_o_l_s, a comma-separated list of
  30.                      protocol names.  List information defined by all
  31.                      protocols if _p_r_o_t_o_c_o_l_s is aaaallllllll.  If _p_r_o_t_o_c_o_l_s or a part of
  32.                      it has the form _p_r_o_t_o_c_o_l._n_a_m_e, list information about
  33.                      _n_a_m_e only.  ----LLLL causes _n_e_t_s_n_o_o_p to ignore other options
  34.                      and to exit after listing protocol information.
  35.  
  36.      -b _b_u_f_f_e_r       Set the capture buffer size to _b_u_f_f_e_r packets.
  37.  
  38.      -c _c_o_u_n_t        Stop capturing after receiving _c_o_u_n_t packets that match
  39.                      _f_i_l_t_e_r.  All _c_o_u_n_t packets are buffered before they are
  40.                      decoded; that is, ----cccc _c_o_u_n_t implies ----bbbb _c_o_u_n_t.
  41.  
  42.      -d              Dump entire packets in hexadecimal rather than decoding
  43.                      them symbolically.  This option overrides the partial hex
  44.                      dump options ----hhhh and ----xxxx.
  45.  
  46.      -e _f_l_a_g_s        Capture packets received with the data link errors
  47.                      specified by _f_l_a_g_s, a comma-separated list of flag names.
  48.                      The following flags are supported:  aaaannnnyyyy, ffffrrrraaaammmmeeee, cccchhhheeeecccckkkkssssuuuummmm,
  49.                      ttttoooooooobbbbiiiigggg, ttttoooooooossssmmmmaaaallllllll, nnnnoooobbbbuuuuffffssss, oooovvvveeeerrrrfffflllloooowwww, and mmmmeeeemmmmoooorrrryyyy.  See
  50.                      _s_n_o_o_p(7P) for more about _n_e_t_s_n_o_o_p error flags.  If the
  51.                      _f_i_l_t_e_r argument is omitted, _n_e_t_s_n_o_o_p captures only
  52.                      packets received non-promiscuously with the specified
  53.                      errors.  Otherwise it captures both packets matching
  54.                      _f_i_l_t_e_r and packets received with errors.
  55.  
  56.      -h _h_e_x_p_r_o_t_o_s    Dump the frames for the protocols named in the comma-
  57.                      separated _h_e_x_p_r_o_t_o_s list in hexadecimal rather than
  58.                      decoding them symbolically.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  71.  
  72.  
  73.  
  74.      -i _i_n_t_e_r_f_a_c_e    Snoop on the network associated with _i_n_t_e_r_f_a_c_e.  By
  75.                      default, _n_e_t_s_n_o_o_p captures packets from a host's primary
  76.                      interface.  _I_n_t_e_r_f_a_c_e may name a network interface, a
  77.                      host that addresses a configured interface, an interface
  78.                      on a host (_h_o_s_t:_i_f_n_a_m_e) running _s_n_o_o_p_d, or a tracefile
  79.                      created by the ----oooo option.  Invoke _n_e_t_s_t_a_t(1M) with the ----iiii
  80.                      option to list configured interfaces and their hostnames.
  81.  
  82.      -l _l_e_n_g_t_h       Set the length in bytes of packet data to capture.  By
  83.                      default, _n_e_t_s_n_o_o_p captures all bytes of packet data.
  84.  
  85.      -n _n_u_l_l_p_r_o_t_o_s   Do not decode or dump frames for the protocols named in
  86.                      the comma-separated _n_u_l_l_p_r_o_t_o_s list.
  87.  
  88.      -o _t_r_a_c_e_f_i_l_e    Output undecoded packets to _t_r_a_c_e_f_i_l_e.  By deferring
  89.                      packet decoding until a subsequent _n_e_t_s_n_o_o_p invocation,
  90.                      this option improves capture effectiveness.  It typically
  91.                      produces a smaller tracefile than would result from
  92.                      redirecting decoded output.
  93.  
  94.      -p _p_r_o_t_o_p_t_s     Set protocol options.  Each option in the comma-separated
  95.                      _p_r_o_t_o_p_t_s list has one of these forms:
  96.  
  97.                      _p_r_o_t_o_c_o_l._o_p_t_i_o_n
  98.                      _p_r_o_t_o_c_o_l.nnnnoooo_o_p_t_i_o_n
  99.                      _p_r_o_t_o_c_o_l._o_p_t_i_o_n=_v_a_l_u_e
  100.  
  101.                      Use nnnneeeettttssssnnnnoooooooopppp ----LLLL _p_r_o_t_o_c_o_l to list a protocol's options.
  102.  
  103.      -q _l_i_m_i_t        Reserve _l_i_m_i_t bytes for packet buffering in _n_e_t_s_n_o_o_p's
  104.                      kernel input queue.  The default reservation is 60000
  105.                      bytes.
  106.  
  107.      -r              Decode received sequence numbers rather than numbers
  108.                      rewritten to count only matches against _f_i_l_t_e_r and
  109.                      reception gaps.
  110.  
  111.      -s              After decoding, print statistics telling how many packets
  112.                      were received by the network interface, and how many were
  113.                      subsequently dropped due to kernel resource limits.
  114.  
  115.      -t _i_n_t_e_r_v_a_l     Capture for _i_n_t_e_r_v_a_l seconds.  This option may be used
  116.                      with ----cccc to capture at most _c_o_u_n_t packets in a given
  117.                      _i_n_t_e_r_v_a_l.
  118.  
  119.      -v              Verbose decoding: decode more packet fields.  This option
  120.                      accumulates, so ----vvvvvvvv causes _n_e_t_s_n_o_o_p to show a very
  121.                      verbose representation of protocol data.
  122.  
  123.      -x              Dump packet data not interpreted by protocol decoders in
  124.                      hexadecimal.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  137.  
  138.  
  139.  
  140.      -y              Consult the NIS name service when translating numbers to
  141.                      names.  By default, _n_e_t_s_n_o_o_p uses local databases such as
  142.                      /_e_t_c/_h_o_s_t_s and /_e_t_c/_s_e_r_v_i_c_e_s.
  143.  
  144.    FFFFiiiilllltttteeeerrrr SSSSyyyynnnnttttaaaaxxxx
  145.      _N_e_t_s_n_o_o_p concatenates all _f_i_l_t_e_r arguments after the last option and
  146.      interprets the resulting string as an expression of operands joined by
  147.      operators.  Operands are sub-expressions, path expressions, C integer
  148.      constants, or protocol-specific strings.  All C operators except the
  149.      assignment operators and ????:::: are supported.  The keywords aaaannnndddd and oooorrrr may
  150.      be used in place of &&&&&&&& and ||||||||, respectively.  A single ==== may be used in
  151.      place of ========.  The keyword nnnnooootttt may be used in place of !!!!.  Operators that
  152.      are shell metawords must be quoted if _n_e_t_s_n_o_o_p is invoked from a shell.
  153.      The subtraction operator ---- must be preceded by white space; otherwise it
  154.      is taken to be part of a protocol-specific string (an IP hostname, for
  155.      example).
  156.  
  157.      A path expression is a period-separated sequence of components, of which
  158.      all but the last must be well-formed C identifiers.  Each identifier
  159.      except the last must name a protocol encapsulated by the preceding
  160.      component's protocol, or a structured field in the last protocol.  The
  161.      first identifier in a path names a field in the network interface's data
  162.      link protocol, or a network protocol encapsulated by the data link
  163.      protocol.  Supported data link protocols include 10 Mb/s Ethernet, 100
  164.      Mb/s FDDI, Serial Line IP, and the loopback pseudo-protocol.
  165.  
  166.      If the last identifier in a path expression names a protocol, then the
  167.      expression evaluates to 1 given a packet containing the listed protocols'
  168.      frames, nested in the expressed order; otherwise it evaluates to 0.  If
  169.      the last identifier names a protocol field of structure or array type,
  170.      then the expression evaluates to 1 given a packet containing such a
  171.      field, and to 0 otherwise.  If the last identifier names a protocol field
  172.      of scalar type, then the expression evaluates to the field's contents in
  173.      host order, given a packet that contains the field and that matches the
  174.      path preceding the field.  If the last identifier names a protocol macro,
  175.      _n_e_t_s_n_o_o_p parses the macro's definition in the preceding protocol's
  176.      context.  Otherwise the last component in a path must be a protocol-
  177.      specific string, for example, the name of a well-known port.
  178.  
  179.      _N_e_t_s_n_o_o_p decodes a packet only if _f_i_l_t_e_r evaluates to a non-zero value.
  180.  
  181.    EEEErrrrrrrroooorrrr CCCCoooorrrrrrrreeeeccccttttiiiioooonnnn
  182.      A filter may lack ==== (========) and aaaannnndddd (&&&&&&&&) operators in many cases.
  183.      _N_e_t_s_n_o_o_p's filter parser will correct such errors by inserting the
  184.      appropriate operator, based on the type of the operand to the left of the
  185.      insertion point.  For example, the filter
  186.  
  187.           ip.dst fergie udp.dport 1023
  188.  
  189.  
  190.      will be corrected as follows.  First, the parser inserts ======== after iiiipppp....ddddsssstttt,
  191.      because the latter is not a comparison:
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  203.  
  204.  
  205.  
  206.           ip.dst == fergie udp.dport 1023
  207.  
  208.  
  209.      Then, because no operator was found after the comparison iiiipppp....ddddsssstttt ========
  210.      ffffeeeerrrrggggiiiieeee, the parser inserts &&&&&&&&:
  211.  
  212.           ip.dst == fergie && udp.dport 1023
  213.  
  214.  
  215.      Finally, ======== is inserted after uuuuddddpppp....ddddppppoooorrrrtttt, for the same reason that ======== was
  216.      inserted after iiiipppp....ddddsssstttt, above:
  217.  
  218.           ip.dst == fergie && udp.dport == 1023
  219.  
  220.  
  221.      _N_e_t_s_n_o_o_p prints the corrected filter enclosed by brackets ([]) before it
  222.      starts capturing, so that the user can verify the correction.
  223.  
  224.    PPPPrrrroooottttooooccccoooollll SSSSttttrrrriiiinnnnggggssss
  225.      Each protocol name in a path opens a scope containing resolved strings,
  226.      such as hostnames and addresses.  For example, the Internet Protocol (IP)
  227.      resolves iiiipppp....bbbbrrrrooooaaaaddddccccaaaasssstttt to the IP broadcast address configured for the
  228.      network interface being snooped, iiiipppp....nnnneeeettttmmmmaaaasssskkkk to the configured IP netmask,
  229.      and 111199992222....22226666....77775555....11112222 to a four-byte IP address in host order.
  230.  
  231.      If a string occurs in an expression without a qualifying protocol path,
  232.      _n_e_t_s_n_o_o_p tries to resolve it in the scope of the last protocol to its
  233.      left in the expression's parse tree.  If that fails, it tries the data
  234.      link protocol's scope.  Thus iiiipppp....ddddsssstttt====bbbbrrrrooooaaaaddddccccaaaasssstttt matches packets destined
  235.      for the local network's IP broadcast address, while bbbbrrrrooooaaaaddddccccaaaasssstttt====iiiipppp....ddddsssstttt
  236.      applied to an Ethernet interface cannot be parsed, because bbbbrrrrooooaaaaddddccccaaaasssstttt is
  237.      unresolved in Ethernet's scope (but iiiipppp....bbbbrrrrooooaaaaddddccccaaaasssstttt====iiiipppp....ddddsssstttt parses).
  238.  
  239.    MMMMaaaaccccrrrroooossss
  240.      Protocols define macros in their own scopes to provide manifest names for
  241.      magic numbers and to provide shorthand for common lengthy expressions.
  242.      For example, the Ethernet protocol defines BBBBRRRROOOOAAAADDDDCCCCAAAASSSSTTTT as the Ethernet
  243.      broadcast address, ffffffff::::ffffffff::::ffffffff::::ffffffff::::ffffffff::::ffffffff.  Protocols also define macros in
  244.      encapsulating protocol scopes to provide nicknames for long protocol path
  245.      expressions.  For example, IP defines nnnnffffssss as a nickname for
  246.      iiiipppp....uuuuddddpppp....ssssuuuunnnnrrrrppppcccc....nnnnffffssss in all data link protocols that contain iiiipppp.  Macros may
  247.      have arguments, which follow the macro name either separated by white
  248.      space, or in a parenthesized, comma-separated list containing arbitrary
  249.      white space.
  250.  
  251.      To define a macro in the subject interface's data link protocol, use
  252.      ddddeeeeffffiiiinnnneeee((((_n_a_m_e,,,, _d_e_f)))).  Calls to ddddeeeeffffiiiinnnneeee may be preceded by a protocol path,
  253.      to define macros in higher-level protocols.  Strings of the form $$$$_N
  254.      within _d_e_f represent formal arguments to _n_a_m_e.  Each such formal is
  255.      replaced by the _Nth actual argument supplied when _n_a_m_e is called.  The
  256.      number of formal and actual arguments must agree.  Calls to ddddeeeeffffiiiinnnneeee expand
  257.      to 1111, so the ,,,, (comma) or &&&&&&&& (aaaannnndddd) operator must be used to join
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  269.  
  270.  
  271.  
  272.      definitions with expressions in a complex _f_i_l_t_e_r argument.
  273.  
  274.    OOOOuuuuttttppppuuuutttt FFFFoooorrrrmmmmaaaatttt
  275.      Each decoded packet begins with a header telling its sequence number,
  276.      length in bytes, and reception time.  The sequence number starts with
  277.      zero and counts only packets that match _f_i_l_t_e_r and packets dropped by the
  278.      kernel, which are assumed to match (use the ----rrrr option to decode
  279.      reception, rather than matched, sequence numbers).  The reception time is
  280.      displayed in hours, minutes, seconds, and microseconds.  For packets
  281.      received with errors, _n_e_t_s_n_o_o_p prints an exclamation point after the
  282.      sequence number and prints error flag mnemonics after the reception time.
  283.  
  284.      After the header come lines containing decoded protocol data.  Data are
  285.      grouped into frames labeled by protocol names.  Each frame consists of
  286.      field names and field contents.  Field names are as in filter
  287.      expressions.  By default, _n_e_t_s_n_o_o_p decodes only interesting fields within
  288.      a frame.  The ----vvvv option increases the level of decoding detail.  With the
  289.      ----xxxx option, any data not interpreted by protocol decoders is dumped in
  290.      lines of hexadecimal (with ASCII), labeled by byte offset from the
  291.      beginning of the packet.  For example, below is the output of nnnneeeettttssssnnnnoooooooopppp
  292.      ----vvvvxxxxcccc 1111 ttttccccpppp:
  293.  
  294.      0000:   len  102   time 11:40:31.925
  295.          ether:  src 8:0:69:2:c:a7/SGI         dst 8:0:69:2:31:30/SGI
  296.          ip:     len 44              id 6393             off 0
  297.                  src twilight.wpd.sgi.com      dst england.wpd.sgi.com
  298.          tcp:    sport 1023                    dport 1021
  299.                  seq 627,392,000     ack 0               flags SYN
  300.                  win 16,384          urp 0
  301.                  maxseg 1460
  302.          00058:                                00 00 00 00 00 06            ......
  303.          00064:  00 14 7f 00 00 01 7f 00 00 01 00 6f 13 49 00 00  ...........o.I..
  304.          00080:  00 00 00 00 00 00 50 00 00 00 00 00 00 00 00 00  ......P.........
  305.          00096:  00 00 ff eb                                      ....
  306.  
  307.  
  308.    EEEEnnnnvvvviiiirrrroooonnnnmmmmeeeennnntttt
  309.      By default, _n_e_t_s_n_o_o_p maps names to numbers using local database files
  310.      such as /_e_t_c/_h_o_s_t_s.  The iiiipppp....hhhhoooossssttttrrrreeeessssoooorrrrddddeeeerrrr protocol option governs IP
  311.      hostname/address resolution.  See _s_e_t_h_o_s_t_r_e_s_o_r_d_e_r(3N) and _r_e_s_o_l_v_e_r(4) for
  312.      the format of this option's value.  _N_e_t_s_n_o_o_p caches name/number
  313.      associations in protocol-specific files in /_t_m_p, so that subsequent
  314.      invocations can more quickly map numbers that occur frequently in network
  315.      traffic.  Cache entries have a cache-specific ``time-to-live'' - older
  316.      cache files are unlinked at startup, and reconstituted to contain new-
  317.      found associations upon termination.
  318.  
  319.      When _n_e_t_s_n_o_o_p is started, it tries to read a file named ._n_e_t_s_n_o_o_p_r_c in
  320.      the user's home directory.  A valid ._n_e_t_s_n_o_o_p_r_c file consists of blank
  321.      lines, comment lines beginning with ####, macro definitions, default command
  322.      options, and protocol option settings.  Macro definition have the form
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  335.  
  336.  
  337.  
  338.           define    ip.udst   ip.dst == $1 && udp.dport == $2
  339.  
  340.  
  341.      Default options may be set as follows:
  342.  
  343.           option    -x -n ether
  344.  
  345.  
  346.      Protocol options are set as with the ----pppp option (white space may be used
  347.      as well as commas to separate options):
  348.  
  349.           set  ip.noetherupdate arpip.noetherupdate
  350.  
  351.  
  352.      _N_e_t_s_n_o_o_p's command line overrides ._n_e_t_s_n_o_o_p_r_c.
  353.  
  354. EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
  355.      To capture all packets received without errors and decode every byte in
  356.      each packet, issue:
  357.  
  358.           netsnoop -vvvx
  359.  
  360.  
  361.      To capture _r_l_o_g_i_n(1) traffic between jjjjaaaakkkkeeee and eeeellllwwwwoooooooodddd, issue:
  362.  
  363.           netsnoop ip.between jake elwood and tcp.port login
  364.  
  365.  
  366.      The following invocation captures all packets, good or bad:
  367.  
  368.           netsnoop -e any 1
  369.  
  370.  
  371.      A constant non-zero filter expression must be used with ----eeee in order to
  372.      capture all packets.  Without the 1111, only bad packets destined for the
  373.      snooping host would be captured.
  374.  
  375.      To capture 10 UDP broadcast packets from host jjjjaaaakkkkeeee, issue:
  376.  
  377.           netsnoop -c 10 udp and ip.src=jake and ip.dst=broadcast
  378.  
  379.  
  380.      The following invocation captures NFS traffic from eeeellllwwwwoooooooodddd to jjjjaaaakkkkeeee, and
  381.      makes use of error correction:
  382.  
  383.           netsnoop nfs ip.src elwood ip.dst jake
  384.           [nfs && ip.src == elwood && ip.dst == jake]
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))                                                      NNNNEEEETTTTSSSSNNNNOOOOOOOOPPPP((((1111MMMM))))
  401.  
  402.  
  403.  
  404. FILES
  405.      .netsnooprc
  406.      $HOME/.netsnooprc        User customization file
  407.      /tmp/.*.cache            Protocol-dependent caches
  408.      /usr/sbin/netsnoop       Executable
  409.  
  410. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  411.      analyzer(1M), snoopd(1M), ypfiles(4), ethernet(7), snoop(7P),
  412.      _N_e_t_V_i_s_u_a_l_y_z_e_r _U_s_e_r'_s _G_u_i_d_e.
  413.  
  414. BBBBUUUUGGGGSSSS
  415.      You cannot start capturing based on match, interval, or count; nor is
  416.      there an option to stop capturing based on match.
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.